<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <!-- 导入页面的基本样式 -->
    <link rel="stylesheet" href="./css/search.css" />
    <!-- 导入 jQuery -->
    <script src="./lib/jquery.js"></script>
    <!-- 导入模板引擎 -->
    <script src="./lib/template-web.js"></script>
</head>

<body>
    <div class="container">
        <!-- Logo -->
        <img src="./images/taobao_logo.png" alt="" class="logo" />

        <div class="box">
            <!-- tab 栏 -->
            <div class="tabs">
                <div class="tab-active">宝贝</div>
                <div>店铺</div>
            </div>
            <!-- 搜索区域（搜索框和搜索按钮） -->
            <div class="search-box">
                <input id="ipt" type="text" class="ipt" placeholder="请输入要搜索的内容" /><button class="btnSearch">
          搜索
        </button>
            </div>
            <!-- 搜索建议列表 -->
            <div id="suggest-list"></div>
        </div>
    </div>
    <!-- 创建一个模板字符 -->
    <script type="text/html" id="tpl-suggList">
        {{each result}}
        <div id="item-list">{{$value[0]}}</div>
        {{/each}}
    </script>
    <script>
        // jq 入口函数
        $(function() {
            // 创建一个全局定时器 id
            let timer = null
                // 创建全局对象用于记录搜索记录
            let cacheObj = {}
                // 防抖函数
            function delay(keywords) {
                // 每五百秒执行一次 get 函数
                timer = setTimeout(function() {
                    getSuggestList(keywords)
                }, 500)
            }

            // 给输入框绑定一个键盘弹起事件
            $("#ipt").on('keyup', function() {
                // 清除定时器
                clearTimeout(timer)
                    // 获取文本框的值
                let keywords = $(this).val().trim()
                    // 判断 输入是否为空 如果为空 返回 并将 提示列表清空并隐藏
                if (keywords.length <= 0) {
                    return $('#suggest-list').empty().hide()
                }
                // 判断 输入的数据之前有没有请求过
                if (cacheObj[keywords]) {
                    // 如果之前出现过，直接将对应对象的值渲染到页面，无需再次请求
                    return render(cacheObj[keywords])
                }
                delay(keywords)
                    // 调用 jsonp 函数
                    // getSuggestList(keywords)
            })

            // 创建一个函数 用于获取服务器返回的数据
            function getSuggestList(kw) {
                $.ajax({
                    url: 'https://suggest.taobao.com/sug?q=' + kw,
                    dataType: 'jsonp',
                    // 成功回调函数
                    success: function(res) {
                        console.log(res);
                        // 给全局对象添加值
                        cacheObj[kw] = res
                            // 调用函数 渲染页面
                        render(res)
                    }
                })
            }

            // 创建一个渲染 UI 函数
            function render(res) {
                // 如果从服务器没有获取数据
                if (res.length <= 0) {
                    // 将提示列表清空 并 返回
                    return $('#suggest-list').empty().hide()
                }
                // 调用 template 函数 对页面进行渲染
                let htmlStr = template('tpl-suggList', res)
                    // 将模板字符填充进页面,并将标签显示出来
                $('#suggest-list').html(htmlStr).show()
            }
        })
    </script>
</body>

</html>